import Vue from 'vue'
import VueRouter from 'vue-router'
import routes from "./routes"
import store from "@/store"

import { Message } from 'element-ui'

Vue.use(VueRouter)



const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})
// 进入页面之前
router.beforeEach(async function (to, from, next) {
  if (to.path != "/login" && to.path != "/404") {
    // 后台管理系统中的页面  => 进入之前先判断用户是否登录
    // console.log(to, from);
    var info = await store.dispatch("authority/getAuthorityInfo");
    if (!info) {//用户没有登录
      Message.error("请先登录账号");
      next({ path: "/login", query: { ReturnURL: this.$route.fullPath } })
    } else {
      next();
    }
  } else {
    next();
  }
})

var whiteBase = ["/login", "/404"];
router.beforeEach(async function (to, from, next) {
  // console.log(to, from, next);
  var { role, checkedkeys } = store.state.authority;
  // console.log("beforeEach", role, checkedkeys);
  // console.log("to", to);   // 通过matched访问对应的二级路由

  if (!whiteBase.includes(to.path)) {  // 不是白名单  -> 用户已经登录

    if (role != 1) {
      // 权限路径控制  => 普通管理员/用户
      // console.log(to.name); //返回当前路由的name  =>  /banner/list/swiper  name=> swiperMode 对不上(三级路由页面无法访问)
      // console.log(to.matched[1].name);  //  matched => 当前路由以及父代路由的集合  => to.matched[1]路由列表中的第二个(三级路由的父路由)
      if (!checkedkeys.includes(to.matched[1].name)) {  // 权限列表中不包含当前name 
        // next()
        next("/404");  //跳转 -> /404
      } else {  // 权限列表中包含当前name 
        next()
      }
    } else {  // 超级管理员 -> 直接进
      next();
    }

  } else {  //白名单  -> 直接过去
    next();
  }



})


export default router
